﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TCC_Hotel.Entidades;
using TCC_Hotel.Serviços.BDServices;
using System.Drawing;

namespace TCC_Hotel.Apresentacao.Fornecedores
{
    public partial class ListarFornecedores : System.Web.UI.Page
    {
        List<Fornecedor> fornecedor = null;
        FornecedorService servico = new FornecedorService();
        LoginService servico_Login = new LoginService();

        /// <summary>
        /// Carregamento da página
        /// </summary>
        protected void Page_Load(object sender, EventArgs e)
        {
            //Recupera o usuario corrente
            string usuario = Request.ServerVariables["AUTH_USER"].ToString();
            LoginService servico_Login = new LoginService();
            //Verifica permissao ao acesso da página
            if (!servico_Login.RecuperarPermissaoCache(usuario).Listar_Fornecedores)
            {
                //Redireciona para a pagina inicial
                Response.Redirect("~/");
            }

            //Verifica permissao ao acesso da página
            if (!servico_Login.RecuperarPermissaoCache(usuario).Cadastrar_Fornecedores)
            {
                //Redireciona para a pagina inicial
                btnCadastrar.Visible = false;

                //tira as colunas nao permitida do usuario
                for (int i = 0; i < grdFornecedores.Columns.Count; i++)
                {
                    if (grdFornecedores.Columns[i].AccessibleHeaderText == "Editar")
                    {
                        grdFornecedores.Columns[i].Visible = false;
                    }
                }
            }
         
            if (!IsPostBack)
            {
                //recupera todos os funcionarios do banco de dados          
                ReloadGridView();
            }
        }

        /// <summary>
        /// Faz o reload do gridview quando necessário e consulta o cache
        /// </summary>
        private void ReloadGridView()
        {

            //Consulta os apartamentos no serviço. Nele será verificado o cache
            fornecedor = servico.ListarFornecedoresCache();

            fornecedor = fornecedor.Where(i => i.NomeFornecedor.ToUpper().Contains(txtBusca.Text.ToUpper())).OrderBy(i => i.NomeFornecedor).ToList();


            //popular gridView
            grdFornecedores.DataSource = fornecedor;
            grdFornecedores.DataBind();

        }

        /// <summary>
        /// Evento do botão de filtrar os nomes para facilitar a busca
        /// </summary>
        protected void btnBusca_Click(object sender, EventArgs e)
        {
            ReloadGridView();
        }


        /// <summary>
        /// Limpa a busca
        /// </summary>
        protected void btnLimpar_Click(object sender, EventArgs e)
        {
            txtBusca.Text = null;
            ReloadGridView();
        }

        /// <summary>
        /// Evento do botão de cadastrar que chama a tela de cadastro
        /// </summary>
        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            //Redireciona para a pagina de cadastro
            Response.Redirect("~/Apresentacao/Fornecedores/CadastrarFornecedor.aspx");

        }

        /// <summary>
        /// Evento que controla a paginação e verifica o cache
        /// </summary>
        protected void grdFornecedores_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            //Consulta os apartamentos no serviço. Nele será verificado o cache
            fornecedor = servico.ListarFornecedoresCache();

            fornecedor = fornecedor.Where(i => i.NomeFornecedor.ToUpper().Contains(txtBusca.Text.ToUpper())).OrderBy(i => i.NomeFornecedor).ToList();


            //Na mudança de pagina, chama o evento de aparecer a lista
            grdFornecedores.PageIndex = e.NewPageIndex;
            grdFornecedores.DataSource = fornecedor;
            grdFornecedores.DataBind();
        }

        /// <summary>
        /// Evento de click em algum dos botões 
        /// </summary>
        protected void grdFornecedores_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            //Verifica qual o botão que o usuário clicou
            if (e.CommandName == "editarFornecedor")
            {

                //Redireciona para a pagina de detalhes correspondente com o numero como parametro
                Response.Redirect("~/Apresentacao/Fornecedores/Editarfornecedor.aspx?id=" + grdFornecedores.Rows[Convert.ToInt16(e.CommandArgument)].Cells[0].Text);



            }
          
        }      

       
    }
}